<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[013]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>013 分页系统的原理</span></div>
<?php include 'include/top.php';?>
<?php include 'include/conn.php';?>
<div class="text">
<b>limit</b>
在sql语句中<strong>limit</strong>用于将结果集分段.在分页系统中有很良好的应用.<br />
其用法在前面我们接触过.如下所示.<br />
select * from 	`table` where ... limit 0,5<br />
select * from 	`table` where ... limit 0,5<br />
select * from 	`table` where ... limit 开始条数,执行条数<br />
这里<strong>开始条数</strong>是指在数据库中的数组位置,0开始第几个.而<strong>执行条数</strong>指本次sql语句执行的条数.
</div>

<div class="text">
<b>分页的一种公式</b>
从上面的语句我们可以总结出分页的一种公式.<br />
select * from `table` where ... limit (当前页-1)*每页显示条数,每页显示条数.<br />
那么我们就很容易来实现对内容的分页了!<br />


</div>
<div class="text">
<b>parse_url()</b>
在<strong>php</strong>语句中<strong>parse_url()</strong>函数用于将当前<strong>url</strong>以一定的格式分割为一个数组<br />
当然我们举一个例子来说明它的用途.<br />
<div class="code">
&lt;?php <br />
$url='http://username:password@www.baidu.com/fenye.php?page=1#anchor';<br />
$url=parse_url($url);<br />
print_r($url);<br />
?&gt;</div>
我们运行它<br />
<div class="effect">
<?php 
$url='http://username:password@www.baidu.com/fenye.php?page=1#anchor';
$url=parse_url($url);
print_r($url);
?>
</div>
<p>我们发现这个函数把<strong>url</strong> 分割为  </p>
<p>Array (<br /> 
	[scheme] =&gt; http	//协议<br /> 
	[host] =&gt; www.baidu.com 	//域名<br />
	[user] =&gt; username 	//用户名<br />
	[pass] =&gt; password 	//用户密码<br />
	[path] =&gt; /fenye.php 	//路径<br />
	[query] =&gt; page=1 	//参数<br />
	[fragment] =&gt; anchor  //变数<br />
	)</p>
</div>

<div class="text">
<b>$_SERVER['REQUEST_URI']</b>
在<strong>php</strong>语句中<strong>$_SERVER['REQUEST_URI']</strong>函数用于获取当前页域名后的所有信息,当然我们用实例来解释.<br />
<div class="code">
&lt;?php <br />
echo $_SERVER['REQUEST_URI'];<br />
?&gt;</div>
我们运行后得到下面的结果
<div class="effect">
<?php 
echo $_SERVER['REQUEST_URI'];
?>
</div>
</div>


<div class="text">
<b>一个完整的分页</b>
通过上面的解析我们应该很容易写出一个完整的分页系统来!<br />
主要的思想是,我们利用<strong>$_server['REQUEST_URI']</strong>获取当前页面的相对路径.使用<strong>parse_url</strong>函数来分割这个路径而获得我们需要连接的正确地址.而在使用<strong>分页公式</strong>来实现地址后参数来确定第几页,显示哪些条的数据.<br />
下面我们开始实战吧!<br />
<div class="code">
&lt;?php<br />
$getpage=@$_GET[page];<br />
$pagesize=5;<br />
$url=parse_url($_SERVER['REQUEST_URI']);<br />
print_r($url);<br />
if ($getpage&gt;=1)<br />
{<br />
$page=$getpage;<br />
}<br />
else<br />
{<br />
$page=1;<br />
}<br />
$pagelimit=($page-1)*$pagesize;<br />
echo '$pagelimit值:'.$pagelimit.'&lt;br /&gt;$pagesize值:'.$pagesize.'&lt;br /&gt;';<br />
echo $sql=&quot;select * from `study011` where 1 limit $pagelimit,$pagesize&quot;;<br />
echo '&lt;br /&gt;';<br />
$query=mysql_query($sql,$conn);<br />
$numq=mysql_query(&quot;select * from `study011` where 1&quot;);<br />
$num=mysql_num_rows($numq);<br />
while ($arr=mysql_fetch_array($query))<br />
{<br />
echo $arr['ID'].' | '.$arr['TITLE'].' | '.$arr['CONTENT'].'&lt;BR /&gt;' ;<br />
}<br />
?&gt;<br />
&lt;a href=&quot;&lt;?php echo $url['path'].'?page='.($page-1); ?&gt;&quot;&gt;[上一页]&lt;/a&gt;[第&lt;?php echo $page;?&gt;页][共&lt;?php echo $num;?&gt;条]&lt;a href=&quot;&lt;?php echo $url['path'].'?page='.($page+1); ?&gt;&quot;&gt;[下一页]&lt;/a&gt;<br />
</div>
我们来看下面实现的效果.
<div class="effect">
<?php
$getpage=@$_GET[page];
$pagesize=5;
$url=parse_url($_SERVER['REQUEST_URI']);
print_r($url);
if ($getpage>=1)
{
$page=$getpage;
}
else
{
$page=1;
}
$pagelimit=($page-1)*$pagesize;
echo '$pagelimit值:'.$pagelimit.'<br />$pagesize值:'.$pagesize.'<br />';
echo $sql="select * from `study011` where 1 limit $pagelimit,$pagesize";
echo '<br />';
$query=mysql_query($sql,$conn);
$numq=mysql_query("select * from `study011` where 1");
$num=mysql_num_rows($numq);
while ($arr=mysql_fetch_array($query))
{
echo $arr['ID'].' | '.$arr['TITLE'].' | '.$arr['CONTENT'].'<BR />' ;
}
?>
<a href="<?php echo $url['path'].'?page='.($page-1); ?>">[上一页]</a>[第<?php echo $page;?>页][共<?php echo $num;?>条]<a href="<?php echo $url['path'].'?page='.($page+1); ?>">[下一页]</a>
</div>
</div>
</body>
</html>
